這個標題好像有點奇怪,我主要是要表達Hadoop為什麼可以彈性擴充..還有介紹一下Hadoop的分散式架構..
Hadoop是一個可以進行大量分散運算的架構,
前面有提到最主要兩個要素是NameNode與DataNode,
DataNode可以一直擴充,NameNode會記錄他有管哪幾個DataNode。
我們在進行大量運算的時候,一般而言我們會先把要運算的資料,先載入到一個儲存的空間裡。
前面有提到,BigData基本上都是TB,所以要在一台主機上直接放上幾十TB的資料,
會花費很昂貴的成本,但是Hadoop的分散式儲存架構(Hadoop Distributed File System),也就是HDFS,可以把一個很大的檔案切割很多區塊,每個區塊會按照設定的副本數儲存到DataNode上。
從這邊就可以看到兩個優點,第一個當檔案分散為很多區塊的時候,這樣就可以從不一樣的主機,讀取同檔案的不同區塊,最後在NameNode組合起來,可以分散I/O的處理。
第二個就是副本的機制,多副本的好處是,當其中一台DataNode壞掉的時候,若其他DataNode有保留這個複本,就可以避免這個檔案的該區塊毀壞,也避免整個檔案毀壞。
所以說大象要伸縮的彈性就變很容易,若要運算的資料很大量,就增加多一點機器或是拿一些平常不會使用的機器,若不需要那麼多資源,其實也可以再把機器移掉或關閉,只要能確保要運算的檔案,至少有一個區塊的副本在現有的DataNode上。
不過一般而言也不會刻意把機器關閉就是...但是結合Amazon的服務的話,就真的可以在運算的時候啟動這些節點,平常把他關閉就好。
今天比較偏向講HDFS分散式儲存的部分,當介紹Map/Reduce的時候,會比較了解Hadoop如何做分散式的運算,同時也會提到很重要的一點,就是本地最佳化,當Hadoop分散式做運算的時候,該運算節點會偏好去取得該台主機原本就有的資料區塊,這樣才不會當我在A node做運算,結果資料在B Node,還需要B Node把要算的區塊透過網路傳到A Node,這樣就會慢了許多。
明天就要上班了阿...好想繼續放假 哈